package com.sunmi.samples.printerx;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.sunmi.printerx.SdkException;
import com.sunmi.samples.printerx.databinding.FragmentCmdBinding;

import java.nio.charset.StandardCharsets;

public class CmdFragment extends Fragment {

    private FragmentCmdBinding binding;

    public CmdFragment() {
        super();
    }


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = FragmentCmdBinding.inflate(inflater, container, false);
        return binding.getRoot();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        binding.cmdEsc.setOnClickListener(view1 -> {
            try {
                ((MainActivity)getActivity()).selectPrinter.commandApi().sendEscCommand(getErlmoData());
            } catch (SdkException e) {
                e.printStackTrace();
            }
        });

        binding.cmdTspl.setOnClickListener(view12 -> {
            try {
                ((MainActivity)getActivity()).selectPrinter.commandApi().sendTsplCommand(getTsplCmd());
            } catch (SdkException e) {
                e.printStackTrace();
            }
        });

        binding.cmdEscBluetooth.setOnClickListener(view14 -> {
            if(BlueToothUtils.connectBlueTooth(getContext())){
                BlueToothUtils.sendData(getErlmoData());
                BlueToothUtils.disconnectBlueTooth(getContext());
            }
        });

        binding.cmdTsplBluetooth.setOnClickListener(view13 -> {
            if(BlueToothUtils.connectBlueTooth(getContext())){
                BlueToothUtils.sendData(getTsplCmd());
                BlueToothUtils.disconnectBlueTooth(getContext());
            }
        });
    }

    public static byte[] getErlmoData() {
        byte[] rv = new byte[]{
                0x1b, 0x40, 0x1b, 0x61, 0x00, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x20, 0x1d, 0x21, 0x11, 0x23, 0x31, 0x1d, 0x21, 0x00, 0x00, (byte) 0xb6, (byte) 0xf6
                , (byte) 0xc1, (byte) 0xcb, (byte) 0xc3, (byte) 0xb4, (byte) 0xcd, (byte) (byte) 0xe2, (byte) 0xc2, (byte) 0xf4, (byte) 0xb5, (byte) 0xa5, 0x20, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x0a, 0x0a, 0x1b, 0x61
                , 0x01, (byte) 0xbf, (byte) 0xa8, (byte) 0xc8, (byte) 0xf8, (byte) 0xc5, (byte) 0xfb, (byte) 0xc8, (byte) 0xf8, 0x0a, 0x0a, 0x1b, 0x61, 0x00, 0x1b, 0x61, 0x01, 0x1d, 0x21, 0x11, 0x2d, 0x2d
                , (byte) 0xd2, (byte) 0xd1, (byte) 0xd6, (byte) 0xa7, (byte) 0xb8, (byte) 0xb6, 0x2d, 0x2d, 0x1d, 0x21, 0x00, 0x00, 0x0a, 0x0a, 0x1b, 0x61, 0x00, 0x1b, 0x61, 0x01, 0x1d, 0x21
                , 0x11, (byte) 0xd4, (byte) 0xa4, (byte) 0xbc, (byte) 0xc6, 0x31, 0x39, 0x3a, 0x30, 0x30, (byte) 0xcb, (byte) 0xcd, (byte) 0xb4, (byte) (byte) 0xef, 0x1d, 0x21, 0x00, 0x00, 0x0a, 0x0a, 0x1b, 0x61
                , 0x00, 0x5b, (byte) 0xcf, (byte) 0xc2, (byte) 0xb5, (byte) 0xa5, (byte) 0xca, (byte) 0xb1, (byte) 0xbc, (byte) (byte) 0xe4, 0x5d, 0x32, 0x30, 0x31, 0x34, 0x2d, 0x31, 0x32, 0x2d, 0x30, 0x33, 0x20
                , 0x31, 0x36, 0x3a, 0x32, 0x31, 0x0a, 0x5b, (byte) 0xb1, (byte) 0xb8, (byte) 0xd7, (byte) 0xa2, 0x5d, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) 0xbb, (byte) 0xb3, (byte) 0xd4, (byte) 0xc0, (byte) 0xb1, 0x20
                , (byte) 0xc0, (byte) 0xb1, (byte) 0xd2, (byte) 0xbb, (byte) 0xb5, (byte) (byte) 0xe3, 0x20, (byte) 0xb6, (byte) (byte) 0xe0, (byte) 0xbc, (byte) 0xd3, (byte) 0xc3, (byte) 0xd7, 0x20, (byte) 0xc3, (byte) 0xbb, (byte) 0xc1, (byte) (byte) 0xe3, (byte) 0xc7, (byte) 0xae, 0x1d, 0x21
                , 0x00, 0x0a, 0x5b, (byte) 0xb7, (byte) 0xa2, (byte) 0xc6, (byte) 0xb1, 0x5d, (byte) 0xd5, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xc7, (byte) 0xd2, (byte) 0xbb, (byte) 0xb8, (byte) 0xf6, (byte) 0xb7, (byte) 0xa2, (byte) 0xc6, (byte) 0xb1, (byte) 0xcc, (byte) 0xa7
                , (byte) 0xcd, (byte) 0xb7, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d
                , 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, (byte) 0xb2, (byte) 0xcb, (byte) 0xc3, (byte) 0xfb, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, (byte) 0xca, (byte) 0xfd, (byte) 0xc1, (byte) 0xbf, 0x20, 0x20, (byte) 0xd0, (byte) 0xa1
                , (byte) 0xbc, (byte) 0xc6, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x31, (byte) 0xba, (byte) 0xc5, (byte) 0xc0, (byte) 0xba, (byte) 0xd7, (byte) 0xd3
                , 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, (byte) 0xc3, (byte) 0xc0
                , (byte) 0xca, (byte) 0xb3, (byte) 0xd2, (byte) 0xbb, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21
                , 0x01, 0x20, 0x78, 0x34, 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x34
                , 0x1d, 0x21, 0x00, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, (byte) 0xc3, (byte) 0xc0, (byte) 0xca, (byte) 0xb3, (byte) 0xb6, (byte) 0xfe, 0x1d, 0x21, 0x00, 0x20, 0x20
                , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x36, 0x1d, 0x21, 0x00, 0x1d, 0x21
                , 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x36, 0x1d, 0x21, 0x00, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2
                , (byte) 0xca, (byte) 0xd4, (byte) 0xc3, (byte) 0xc0, (byte) 0xca, (byte) 0xb3, (byte) 0xc8, (byte) 0xfd, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x32, 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20
                , 0x1d, 0x21, 0x01, 0x32, 0x1d, 0x21, 0x00, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x32, (byte) 0xba
                , (byte) 0xc5, (byte) 0xc0, (byte) 0xba, (byte) 0xd7, (byte) 0xd3, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2
                , (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, 0x31, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x31, 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x1d, 0x21, 0x01, 0x31, 0x1d, 0x21, 0x00, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, 0x32, 0x1d, 0x21, 0x00, 0x20, 0x20
                , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x31
                , 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x31, 0x1d, 0x21, 0x00, 0x0a
                , 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, 0x33, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x31, 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00
                , 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x32, 0x33, 0x1d, 0x21, 0x00, 0x0a, 0x1d, 0x21, 0x01, 0x28, 0x2b, 0x29, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca
                , (byte) 0xd4, (byte) 0xd1, (byte) 0xf3, (byte) 0xc6, (byte) 0xf8, (byte) 0xa4, (byte) 0xce, (byte) 0xce, (byte) 0xf7, (byte) 0xca, (byte) 0xbd, (byte) 0xcc, (byte) 0xf0, (byte) 0xb5, (byte) (byte) 0xe3, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x1d, 0x21
                , 0x01, 0x20, 0x78, 0x31, 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x31
                , 0x1d, 0x21, 0x00, 0x0a, 0x1d, 0x21, 0x01, 0x28, 0x2b, 0x29, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, (byte) 0xcb, (byte) (byte) 0xe1, (byte) 0xc0, (byte) 0xb1, (byte) 0xc4, (byte) 0xbe, (byte) 0xb6, (byte) 0xfa
                , 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x31, 0x1d, 0x21, 0x00, 0x1d, 0x21
                , 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x38, 0x1d, 0x21, 0x00, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d
                , 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x33, (byte) 0xba, (byte) 0xc5, (byte) 0xc0, (byte) 0xba, (byte) 0xd7, (byte) 0xd3, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d
                , 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, (byte) 0xb2, (byte) 0xcb, (byte) 0xc6, (byte) 0xb7, (byte) 0xc3, (byte) 0xfb, (byte) 0xd7, (byte) 0xd6, (byte) 0xba, (byte) 0xdc
                , (byte) 0xb3, (byte) 0xa4, (byte) 0xba, (byte) 0xdc, (byte) 0xb3, (byte) 0xa4, (byte) 0xba, (byte) 0xdc, (byte) 0xb3, (byte) 0xa4, (byte) 0xba, (byte) 0xdc, (byte) 0xb3, (byte) 0xa4, (byte) 0xba, (byte) 0xdc, (byte) 0xb3, (byte) 0xa4, 0x1d, 0x21, 0x00, 0x0a
                , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x31, 0x1d, 0x21, 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01
                , 0x33, 0x30, 0x30, 0x1d, 0x21, 0x00, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xb2, (byte) (byte) 0xe2, (byte) 0xca, (byte) 0xd4, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20
                , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x20, 0x78, 0x31, 0x1d, 0x21
                , 0x00, 0x1d, 0x21, 0x01, 0x1d, 0x21, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1d, 0x21, 0x01, 0x31, 0x1d, 0x21, 0x00, 0x0a, 0x2d, 0x2d
                , 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, (byte) 0xc6, (byte) (byte) 0xe4, (byte) 0xcb, (byte) 0xfb, (byte) 0xb7, (byte) 0xd1, (byte) 0xd3, (byte) 0xc3, 0x20, 0x2d, 0x2d, 0x2d
                , 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x1d, 0x21, 0x01, (byte) 0xc5, (byte) (byte) 0xe4, (byte) 0xcb, (byte) 0xcd, (byte) 0xb7, (byte) 0xd1, 0x1d, 0x21, 0x00, 0x20
                , 0x20, 0x20, 0x20, 0x20, 0x0a, 0x0a, 0x0a, 0x0a
        };
        return rv;
    }

    private byte[] getTsplCmd() {
        String data =  "SIZE 40 mm, 30 mm\r\n" +
                "GAP 3 mm, 0 mm\r\n" +
                "DIRECTION 1,0\r\n" +
                "REFERENCE 0,0\r\n" +
                "SET TEAR 1\r\n" +
                "CLS\r\n" +
                "TEXT 20,10, \"test.ttf\",0,1,1,\"first line!\"\r\n" +
                "TEXT 20,51, \"test.ttf\",0,1,1,\"second line!\"\r\n" +
                "TEXT 20,92, \"test.ttf\",0,1,1,\"third line!\"\r\n" +
                "TEXT 20,133, \"test.ttf\",0,1,1,\"firth line!\"\r\n" +
                //"BARCODE 40,165,\"128\",40,1,0,2,2,\"1234567890\"\r\n" +
                "QRCODE 40,165,L, 4, A, 0,\"abcdefg\"\r\n" +
                "PRINT 1,2\r\n";
        return data.getBytes(StandardCharsets.UTF_8);
    }
}
